﻿#pragma once
#include <array>
#include <memory>
#include <vector>

#include "Scence.h"

class FMeshModel;
class FMesh;
class FLightBase;
struct FPointLight;
struct FSpotLight;
struct FDirectionLight;
class FCamera;

class FModelTestScene
	: public FScence
{
public:
	void Init(FRender* InRender) override;
	void Destory() override;
	void Draw(float DateTime) override;
	std::shared_ptr<FCamera> GetCamera()const override { return  Camera; }  // NOLINT(modernize-use-nodiscard)
private:

	void InitLights();

private:
	std::shared_ptr<FMeshModel> MeshModel;
	std::shared_ptr<FMesh> CubMesh;
	std::shared_ptr<FMesh> LightMesh;

	std::vector<std::shared_ptr<FLightBase>> LightArray;
	std::array<std::shared_ptr<FPointLight>, 4> PointLightArr;
	std::shared_ptr<FSpotLight> Spotlight;
	std::shared_ptr<FDirectionLight> DirectionLight;

	std::shared_ptr<FCamera> Camera;
};
